home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / LDAPDelete.class (.txt) next >
Encoding:
Java Class File  |  1999-04-13  |  4.8 KB  |  192 lines

  1. import java.io.BufferedReader;
  2. import java.io.DataInputStream;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.util.Enumeration;
  8. import java.util.Vector;
  9. import netscape.ldap.LDAPConnection;
  10. import netscape.ldap.LDAPControl;
  11. import netscape.ldap.LDAPException;
  12. import netscape.ldap.LDAPSearchConstraints;
  13. import netscape.ldap.util.GetOpt;
  14.  
  15. public class LDAPDelete extends LDAPTool {
  16.    private static String[] m_delete_dn = null;
  17.    private static boolean m_cont;
  18.    private static BufferedReader m_reader = null;
  19.  
  20.    public static void main(String[] var0) {
  21.       if (var0.length < 1) {
  22.          doUsage();
  23.          System.exit(1);
  24.       }
  25.  
  26.       extractParameters(var0);
  27.       if (!LDAPTool.m_justShow) {
  28.          try {
  29.             LDAPTool.m_client = new LDAPConnection();
  30.             LDAPTool.m_client.connect(LDAPTool.m_ldaphost, LDAPTool.m_ldapport);
  31.          } catch (Exception var4) {
  32.             System.err.println("Error: client connection failed!");
  33.             System.exit(1);
  34.          }
  35.  
  36.          try {
  37.             LDAPTool.m_client.authenticate(LDAPTool.m_version, LDAPTool.m_binddn, LDAPTool.m_passwd);
  38.          } catch (Exception var3) {
  39.             System.err.println(((Throwable)var3).toString());
  40.             System.exit(1);
  41.          }
  42.  
  43.          dodelete();
  44.  
  45.          try {
  46.             LDAPTool.m_client.disconnect();
  47.          } catch (Exception var2) {
  48.             System.err.println(((Throwable)var2).toString());
  49.          }
  50.       } else {
  51.          dodelete((LDAPSearchConstraints)null);
  52.       }
  53.  
  54.       System.exit(0);
  55.    }
  56.  
  57.    private static void doUsage() {
  58.       System.err.println("usage: LDAPDelete [options] dn");
  59.       System.err.println("options");
  60.       System.err.println("  -h host       LDAP server name or IP address");
  61.       System.err.println("  -p port       LDAP server TCP port number");
  62.       System.err.println("  -V version    LDAP protocol version number (default is 3)");
  63.       System.err.println("  -D binddn     bind dn");
  64.       System.err.println("  -w password   bind passwd (for simple authentication)");
  65.       System.err.println("  -d level      set LDAP debugging level to 'level'");
  66.       System.err.println("  -f file      read DNs to delete from file");
  67.       System.err.println("  -R            do not automatically follow referrals");
  68.       System.err.println("  -O hop limit  maximum number of referral hops to traverse");
  69.       System.err.println("  -H            display usage information");
  70.       System.err.println("  -c            continuous mode (do not stop on errors)");
  71.       System.err.println("  -M            manage references (treat them as regular entries)");
  72.       System.err.println("  -y proxy-DN   DN to use for access control");
  73.    }
  74.  
  75.    protected static void extractParameters(String[] var0) {
  76.       GetOpt var1 = LDAPTool.extractParameters("Hcf:", var0);
  77.       if (var1.hasOption('H')) {
  78.          doUsage();
  79.          System.exit(0);
  80.       }
  81.  
  82.       if (var1.hasOption('c')) {
  83.          m_cont = true;
  84.       }
  85.  
  86.       if (var1.hasOption('f')) {
  87.          String var2 = var1.getOptionParam('f');
  88.          if (var2 == null) {
  89.             doUsage();
  90.             System.exit(0);
  91.          }
  92.  
  93.          try {
  94.             FileInputStream var3 = new FileInputStream(var2);
  95.             DataInputStream var4 = new DataInputStream(var3);
  96.             m_reader = new BufferedReader(new InputStreamReader(var4));
  97.          } catch (FileNotFoundException var5) {
  98.             System.err.println("File " + var2 + " not found");
  99.          } catch (IOException var6) {
  100.             System.err.println("Error in opening the file " + var2);
  101.          }
  102.       }
  103.  
  104.       if (m_reader == null) {
  105.          Enumeration var7 = var1.getParameters().elements();
  106.          Vector var8 = new Vector();
  107.  
  108.          while(var7.hasMoreElements()) {
  109.             var8.addElement(var7.nextElement());
  110.          }
  111.  
  112.          if (var8.size() <= 0) {
  113.             doUsage();
  114.             System.exit(0);
  115.          }
  116.  
  117.          m_delete_dn = new String[var8.size()];
  118.          var8.copyInto(m_delete_dn);
  119.       }
  120.  
  121.    }
  122.  
  123.    private static void dodelete() {
  124.       LDAPSearchConstraints var0 = (LDAPSearchConstraints)LDAPTool.m_client.getSearchConstraints().clone();
  125.       Vector var1 = new Vector();
  126.       if (LDAPTool.m_proxyControl != null) {
  127.          var1.addElement(LDAPTool.m_proxyControl);
  128.       }
  129.  
  130.       if (LDAPTool.m_ordinary) {
  131.          var1.addElement(new LDAPControl("2.16.840.1.113730.3.4.2", true, (byte[])null));
  132.       }
  133.  
  134.       if (var1.size() > 0) {
  135.          LDAPControl[] var2 = new LDAPControl[var1.size()];
  136.          var1.copyInto(var2);
  137.          var0.setServerControls(var2);
  138.       }
  139.  
  140.       var0.setReferrals(LDAPTool.m_referrals);
  141.       if (LDAPTool.m_referrals) {
  142.          LDAPTool.setDefaultReferralCredentials(var0);
  143.       }
  144.  
  145.       var0.setHopLimit(LDAPTool.m_hopLimit);
  146.       dodelete(var0);
  147.    }
  148.  
  149.    private static void dodelete(LDAPSearchConstraints var0) {
  150.       try {
  151.          if (m_reader == null) {
  152.             for(int var4 = 0; var4 < m_delete_dn.length; ++var4) {
  153.                if (!deleteEntry(m_delete_dn[var4], var0) && !m_cont) {
  154.                   return;
  155.                }
  156.             }
  157.  
  158.          } else {
  159.             Object var1 = null;
  160.  
  161.             while((var3 = m_reader.readLine()) != null) {
  162.                if (!deleteEntry(var3, var0) && !m_cont) {
  163.                   return;
  164.                }
  165.             }
  166.  
  167.          }
  168.       } catch (IOException var2) {
  169.          System.err.println("Error in reading input");
  170.       }
  171.    }
  172.  
  173.    private static boolean deleteEntry(String var0, LDAPSearchConstraints var1) {
  174.       if (LDAPTool.m_verbose) {
  175.          System.err.println("Deleting entry: " + var0);
  176.       }
  177.  
  178.       if (!LDAPTool.m_justShow) {
  179.          try {
  180.             LDAPTool.m_client.delete(var0, var1);
  181.          } catch (LDAPException var3) {
  182.             System.err.println("Delete " + var0 + " failed ");
  183.             System.err.println("\t" + var3.errorCodeToString());
  184.             System.err.println("\tmatched " + var3.getMatchedDN() + "\n");
  185.             return false;
  186.          }
  187.       }
  188.  
  189.       return true;
  190.    }
  191. }
  192.